package com.example.demo.encrypt;

/**
 * @author tangjunmao
 * @date 2018/10/22
 */
public interface Encryptor {

    /**
     * 用公钥对指定字符串加密
     *
     * @param str 需要加密的字符串
     * @param publicKey public key
     */
    String encrypt(String str, String publicKey) throws Exception;

    /**
     * 用私钥对字符串进行解密
     *
     * @param str 需要解密的字符串
     * @param privateKey 私钥
     */
    String decrypt(String str, String privateKey) throws Exception;

    /**
     * 用证书对指定字符串进行签名
     *
     * @param str 需要签名的字符串
     */
    String signature(String str) throws Exception;

    /**
     * 用公钥对签名进行验证
     *
     * @param str 需要签名验证的字符串
     * @param signature 签名值
     * @param publicKey 公钥字符串
     */
    boolean verifySignature(String str, String signature, String publicKey) throws Exception;

}
